<?php

/**
 * 缓存服务总类
 *
 * @author ly-chengminbin
 * 使用Redis 缓存
 *
 */
namespace application\depend;

class Carlifecache
{

    private static $_logInfo = "cache-logs";
    /**
     * 设置缓存
     * @param $name  缓存名称
     * @param $value 缓存值
     * @param $expire 有效时间
     */
    public static function cache($name, $value = '', $expire = null)
    {

        if (is_null($value)) {   //删除key
            try {
                PhpRedis::rm($name);
            } catch (\Exception $e) {
                Applog::errorLog('删除缓存出错:'.$e->getMessage(),__FILE__,__LINE__,self::$_logInfo);
            }
            return;
        }
        if ($value === '') {   //获取数据
            try {
                $ret = PhpRedis::get($name);
                return $ret;
            } catch (\Exception $e) {
                return null;
            }
        }

        //设置数据
        $uri = "/redis/set";
        is_array($value) && $value = json_encode($value);

        if (is_int($expire)) {
            $ret = PhpRedis::set($name,$value,$expire);
        } else {
            $ret  = PhpRedis::set($name,$value);
        }
        APP_DEBUG_LOG && var_dump(['设置缓存' => $ret]);
        return true;
    }//end
    
    /**
     * 设置缓存
     * @param $name  缓存名称
     * @param $value 缓存值
     * @param $expire 有效时间
     */
    public static function cacheBackup($name, $value = '', $expire = null)
    {

        if (is_null($value)) {   //删除key
            try {
                $uri = '/redis/rm';
                $data['name'] = $name;
                $ret = Curlcore::curlPost($uri, $data);
            } catch (\Exception $e) {

            }
            return;
        }
        if ($value === '') {   //获取数据
            try {
                $uri = '/redis/get';
                $data['name'] = $name;
                $ret = Curlcore::curlPost($uri, $data);
                if ($ret['error'] == ERR_RETURN_OK) {
                    return $ret['data'];
                }
                return null;
            } catch (\Exception $e) {
                return null;
            }
        }

        //设置数据
        $uri = "/redis/set";
        is_array($value) && $value = json_encode($value);
        $data['name'] = $name;
        $data['value'] = $value;
        if (is_int($expire)) {
            $data['expire'] = $expire;
            $ret = Curlcore::curlPost($uri, $data);
        } else {
            $ret = Curlcore::curlPost($uri, $data);
        }
        return true;
    }//end

    /**
     * 队列读取
     */
    public static function rpop($name)
    {

    }

    /**
     * 队列插入
     */
    public static function lpush($name, $value = ''){

    }

     /**
     * @param string $name
     * @param string $value
     * 查询在元素集 $name 中   $value元素是否存在
     *
     */
    public static function ismember($name = "",$value = ""){
   
        $ret = PhpRedis::sismember($name,$value);
        if($ret == "0"){
            return false;
        }else{
            return true;
        }
        return false;   //如果查不到缓存  就默认不存在
    }//end function

    /**
     * @param string $name
     * @param string $value
     * 在元素集 $name 中， 增加一个元素 $value
     */
    public static function sadd($name = "", $value = ""){
    
        try{
            PhpRedis::sadd($name,$value);
        }catch(\Exception $e){

        }
    }

    public static function smembers($name){
        return PhpRedis::smembers($name);
    }

    //从集合中删除DCMNO
    public static function srem($name,$value){
        PhpRedis::srem($name,$value);
    }

}//end